package cn.demoncat.util.lang.entity;

import java.util.Comparator;

/**
 * 通用比较器
 * 
 * @author 延晓磊
 *
 * @since 2020年1月6日
 */
public class CommonComparator<T extends Comparable<T>> implements Comparator<T>{
	
	/**
	 * 获取通用比较器
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年1月6日
	 */
	public static <T extends Comparable<T>> Comparator<T> get(){
		return new CommonComparator<>();
	}
	
	/**
	 * 获取逆序通用比较器
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年1月6日
	 */
	public static <T extends Comparable<T>> Comparator<T> revers(){
		return new CommonComparator<T>().reversed();
	}
	
	@Override
	public int compare(T o1, T o2) {
		// 空处理
		if (o1 == null) {
			if (o2 == null) {
				return 0;
			}
			return -1;
		}
		if (o2 == null) {
			return 1;
		}
		// 比较
		return o1.compareTo(o2);
	}
}
